/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Modulo4;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
//import org.json.*;
//import java.io.PrintWriter;
//import Modelo.DAL.ConexionBD;
//import java.sql.*;
import java.util.Date;
import java.util.LinkedList;
import java.text.SimpleDateFormat;
import Modelo.DAL.Asistencia_DAO;

/**
 *
 * @author yngrdyn
 */
public class personalDeGuardiaAction extends org.apache.struts.action.Action {

    /* forward name="success" path="" */
    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        ActionErrors errors = new ActionErrors();

        agregarCambioGuardiaForm formBean = (agregarCambioGuardiaForm)form;
        String fechaGuardia = formBean.getFechaG();
        String sede = formBean.getSede();

        if(fechaGuardia==null || fechaGuardia.equals("")){
            //formBean.setError("La fecha no puede ser vacía");
            errors.add("faltaFecha", new ActionMessage("errors.faltaFecha"));
            saveErrors(request, errors);
            return mapping.findForward(FAILURE);
        }

        if(sede.equals("seleccionar")){
            //formBean.setError("La sede no puede ser vacía");
            errors.add("falta_Sede", new ActionMessage("errors.falta_Sede"));
            saveErrors(request, errors);
            return mapping.findForward(FAILURE);
        }

        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        Date fechaG = new Date();
        try{
            fechaG = sdf.parse(fechaGuardia);
        } catch (Exception e){
            //formBean.setError("Formato incorrecto de la fecha");
            errors.add("format_Fecha", new ActionMessage("errors.format_Fecha"));
            saveErrors(request, errors);
            return mapping.findForward(FAILURE);
        }

        System.out.println("La fecha escrita es: "+fechaGuardia);
//
        Asistencia_DAO asd = new Asistencia_DAO();
        //formBean.setPersonalAsist(listaPersonalAsistencia(fechaGuardia));
        LinkedList lista = asd.listaPersonalAsistencia(sede, fechaGuardia);
        if (lista == null || lista.isEmpty()){
            errors.add("No_hay_Resultados", new ActionMessage("errors.No_hay_Resultados"));
            saveErrors(request, errors);
        }
        formBean.setPersonalAsist(lista);

        /*response.setContentType("text/json");
        JSONObject data = new JSONObject();
        data.put("PersonalAsist",listaPersonalAsistencia(fechaGuardia));
        PrintWriter pw = response.getWriter();
        pw.write(data.toString());
        pw.flush();
        pw.close();
        //Incliur verificacion de fecha
        */
        return mapping.findForward(SUCCESS);
    }
/*
    //Esto debe ir en una de las clases del paquete Modelo.DAL
    public LinkedList<Modelo.ComunidadUniversitaria> listaPersonalAsistencia(String fechaG){
        ConexionBD conex = new ConexionBD();
        //JSONObject nombreEspacios = new JSONObject();
        LinkedList lista = new LinkedList();
        try{
            Statement st = conex.session.createStatement();
            ResultSet rs = st.executeQuery("select CU.ci, CU.nombre_1, CU.apellido_1 "
                    + "from comunidad_universitaria CU, personal_dsi pd, "
                    + "pertenece_grupo pdg where CU.ci = pd.ci and "
                    + "pdg.ci = pd.ci and "
                    + "(pdg.id_grupo,pdg.sede) in (select g.id_grupo,g.sede from guardia g where "
                    + "g.fecha_guardia='"+fechaG+"')");
            int i = 0;
            while(rs.next()){

                Modelo.ComunidadUniversitaria persAsist = new Modelo.ComunidadUniversitaria();

                persAsist.setCi(rs.getString(1));
                persAsist.setNombre1(rs.getString(2));
                persAsist.setApellido1(rs.getString(3));
                lista.add(persAsist);
                //nombreEspacios.put(""+i++,persAsist);
            }
        } catch (Exception e){
            System.out.println("Error al consultar los empleados de una "
                    + "guardia\n"+e.getMessage());
        }
        //return nombreEspacios;
        return lista;
    }
    public JSONObject listaPersonalAsistencia2(String fechaG){
        ConexionBD conex = new ConexionBD();
        JSONObject nombreEspacios = new JSONObject();
        LinkedList lista = new LinkedList();
        try{
            Statement st = conex.session.createStatement();
            ResultSet rs = st.executeQuery("select CU.ci, CU.nombre_1, CU.apellido_1 "
                    + "from comunidad_universitaria CU, personal_dsi pd, "
                    + "personal_dsi_grupos pdg where CU.ci = pd.ci and "
                    + "pdg.ci = pd.ci and "
                    + "pdg.id_grupo in (select g.id_grupo from guardia g where "
                    + "g.fecha_guardia='"+fechaG+"')");
            int i = 0;
            while(rs.next()){
                JSONObject persAsist = new JSONObject();
                persAsist.put("ci",rs.getString(1));
                persAsist.put("nombre_1",rs.getString(2));
                persAsist.put("apellido_1",rs.getString(3));
                lista.add(persAsist);
                nombreEspacios.put(""+i++,persAsist);
            }
        } catch (Exception e){
            System.out.println("Error al consultar los empleados de una "
                    + "guardia\n"+e.getMessage());
        }
        return nombreEspacios;
        //return lista;
    }
 *
 */
}
